﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sistema_Totem.Logica.Clases;
using System.Data;
using Sistema_Totem.Datos.SqlServer;

namespace Sistema_Totem.Vista.Roles
{
    public partial class ListarConsultarRol : System.Web.UI.Page
    {
        #region Atributos
        private List<Rol> listaRol2;
        private string valor;
        #endregion Atributos

        protected void Page_Load(object sender, EventArgs e)
        {

            //if (Session["tipo_usuario"].ToString() != "Administrador")
            //{
            //    Response.Redirect("Login1.aspx");
            //}

            if (!IsPostBack)
            {
                GridViewRol.DataSource = CargarRolTabla();
                GridViewRol.DataBind();
            }
        }

        #region Métodos

        #region Método Cargar GridView
        public DataTable CargarRolTabla()
        {
            Rol rol = new Rol();
            List<Rol> listaRol = rol.ListaRoles();
            // Generar la DataTable de la lista de materias
            DataTable table1 = new DataTable();
            //Crea las columnas de la tabla en el GridView
            table1.Columns.Add("Id", typeof(int));
            table1.Columns.Add("Rol", typeof(string));
            //table1.Columns.Add("Tipo", typeof(string)); 
            //Se recorre la lista de materias para ir asignandolas por fila
            for (int indiceDeRoles = 0; indiceDeRoles < listaRol.Count; indiceDeRoles++)
            {
                table1.Rows.Add(listaRol[indiceDeRoles].Id, listaRol[indiceDeRoles].Nombre);
            }
            Session["listaRol"]= listaRol;
            return table1;
        }
        #endregion Método Cargar GridView

        #region Cargar GridView (nombre/tipo)
        /// <summary>
        /// Método que me llena un GridView dependiendo
        /// de la busqueda si es por tipo o por nombre.
        /// </summary>
        /// <param name="rol"></param>
        /// <returns></returns>
        public DataTable CargarRolTabla2(List<Rol> listaRoles, int caso, string valor)
        {       
           // Generar la DataTable de la lista de materias
            DataTable table1 = new DataTable();
            //Crea las columnas de la tabla en el GridView
            table1.Columns.Add("Id", typeof(int));
            table1.Columns.Add("Rol", typeof(string));
            if (caso == 1)
            {
                foreach(Rol rol in listaRoles)
                {
                   if (rol.Nombre == valor)
                   {
                        table1.Rows.Add(rol.Id, rol.Nombre);
                   }
                }
            }
            else
            {
                foreach(Rol rol in listaRoles)
                {
                   if (rol.TipoRol == valor)
                   {
                        table1.Rows.Add(rol.Id, rol.Nombre);
                    }
                 }      
            }
            return table1;
        }
        #endregion Cargar GridView (nombre/tipo)

        #region Primera Letra Mayuscula
        /// <summary>
        /// Método que me convierte la primera letra
        /// de una cadena en mayúscula.
        /// </summary>
        /// <param name="texto"></param>
        /// <returns></returns>
        public string PrimeraLetraMayúscula(string texto)
        {
            string valor = texto.Substring(0, 1).ToUpper() + texto.Substring(1);
            return valor;
        }
        #endregion Primera Letra Mayuscula

        #endregion Métodos

        protected void GridViewRol_SelectedIndexChanged(object sender, EventArgs e)
        {
            //variable que toma el parametro seleccionando en el GridView
            string nombre = GridViewRol.SelectedRow.Cells[1].Text;
            //variable que pasa por el url el parametro sellecionada 
            //a la vista "ConsultarRol.aspx"
            string _url = string.Format("../Roles/ConsultarRol.aspx?Param1={0}", nombre);
            Response.Redirect(_url);
        }

        protected void GridViewRol_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridViewRol.PageIndex = e.NewPageIndex;
            GridViewRol.DataSource = CargarRolTabla();
            GridViewRol.DataBind();
        }

        /// <summary>
        /// Accion del boton de buscar
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button2_Click(object sender, EventArgs e)
        {
            try
            {
                Mensaje.Visible = false;

                switch (Convert.ToInt32(tipoBusqueda.SelectedValue))
                {
                    case 1:
                        listaRol2 = new List<Rol>();
                        listaRol2 = (List<Rol>)Session["listaRol"];
                        valor = textBuscar.Text;

                        GridViewRol.DataSource = CargarRolTabla2(listaRol2, 1, PrimeraLetraMayúscula(valor));
                        GridViewRol.DataBind();
                        break;

                    case 2:
                        listaRol2 = new List<Rol>();
                        listaRol2 = (List<Rol>)Session["listaRol"];
                        valor = textBuscar.Text;

                        GridViewRol.DataSource = CargarRolTabla2(listaRol2, 2, PrimeraLetraMayúscula(valor));
                        GridViewRol.DataBind();

                        break;
                }
            }
            catch
            {

            }
        }
    }
}